home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
program
/
arp68bk.zoo
/
arp.src
/
prg_9ar.s
< prev
next >
Wrap
Text File
|
1985-11-20
|
4KB
|
97 lines
; Program Name: DONGLE.S
; Version: 1.003
; Version 1.003 added (pc) to the following instruction:
; move.w int_out(pc), d4 ; Store menu identification number in D4.
; Assembly Instructions:
; Assemble in Relocatable mode and save with a PRG extension. From
; the desktop, change the extension to ACC and copy DONGLE.ACC to the
; C partition of the hard disk.
; Execution Instructions:
; Before this program is executed, trap 11 must be installed via the
; execution of program DONGTRAP.PRG. Execute this program by selecting
; it from the accessory menu.
program_start:
lea stack(pc), a7 ; A7 points to program's stack address.
lea aes_pb(pc), a3 ; aes_pb = AES parameter block.
lea control(pc), a4 ; A4 is pointer for array "control".
move.w #$C8, d3 ; *** AES call number in D3.
initialize_application:
move.w #$A, (a4) ; Function = appl_init = AES $A.
move.w #1, 4(a4) ; Return one int_out parameter.
move.l a3, d1 ; A3 contains address of aes parameter block.
move.w d3, d0 ; D3 contains AES call number.
trap #2 ; apid returned in int_out[0] and global[2].
menu_installation:
move.w #$23, (a4) ; Function = menu_register = AES $23.
move.w #1, 2(a4) ; Pass one int_in parameter.
move.w #1, 6(a4) ; Pass one addr_in parameter.
move.w int_out(pc), int_in ; Application identification to int_in[0].
move.l #menu_text, addr_in ; Menu text address to addr_in[0].
move.l a3, d1 ; Address of aes parameter block to D1.
move.w d3, d0 ; D3 contains AES call number.
trap #2 ; Menu identification number returned
; in int_out[0].
move.w int_out(pc), d4 ; Store menu identification number in D4.
; MAIN ACCESSORY LOOP
wait_for_message: ; Relinquish processor control.
move.w #$17, (a4) ; Function = evnt_mesag = AES $17.
move.w #0, 2(a4)
move.l #message, addr_in ; Address of message array to addr_in.
move.l a3, d1 ; Address of aes parameter block to D1.
move.w d3, d0 ; AES call number to D0.
trap #2 ; Message received is placed in array
; "message".
; Enters here only when a message is received.
message_handler: ; Entrance point when message is received.
cmpi.w #$28, message ; Compare AC OPEN code with message[0].
bne.s wait_for_message ; Execute the evnt_mesag function.
move.w message+8, d0 ; id_selected (message[4]) = menu ID of
; item user selected.
cmp.w d4, d0 ; Was this application selected.
bne.s wait_for_message ; Execute the evnt_mesag function.
invoke_software_dongle:
trap #11
bra wait_for_message
data
menu_text: dc.b ' DONGLE ',0
align ; Align storage on a word boundary.
;
; AES PARAMETER BLOCK
;
aes_pb: dc.l control,global,int_in,int_out,addr_in,addr_out
;
; AES CONTROL TABLE
;
bss
control: ds.w 5
global: ds.w 3
ds.l 6
int_in: ds.w 1 ; Input parameter.
int_out: ds.w 1 ; Output parameter.
addr_in: ds.l 1 ; Input address.
addr_out: ds.l 1 ; Output address.
;
; OTHER VARIABLES
;
message: ds.w 8
ds.l 48
stack: ds.l 0
program_end: ds.l 0
end